(function() {
	var plusReady = function(callback) {
		if(window.plus) {
			callback();
		} else {
			document.addEventListener('plusready', callback);
		}
	}
	var shareServices = {};
	var init = function() {
		//获取终端支持的分享通道列表，可用于提示用户进行分享服务器的选择。获取分享服务成功后通过successCB回调返回支持的所有服务列表，获取服务失败则通过errorCB回调返回。
		plus.share.getServices(function(services) {
			for(var i = 0, len = services.length; i < len; i++) {
				shareServices[services[i].id] = services[i];
			}
		});
	};
	var isWechatInstalled = function() {
		//如果第三方程序已安装则返回true，未安装则返回false。
		//appInf: ( ApplicationInf ) 必选 要判断第三方程序的描述信息
		// http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.ApplicationInf
		return plus.runtime.isApplicationExist && plus.runtime.isApplicationExist({
			pname: 'com.tencent.mm',
			action: 'weixin://'
		});
	};
	
	var isQqInstalled = function() {
		//如果第三方程序已安装则返回true，未安装则返回false。
		//appInf: ( ApplicationInf ) 必选 要判断第三方程序的描述信息
		// http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.ApplicationInf
		return plus.runtime.isApplicationExist && plus.runtime.isApplicationExist({
			pname: 'com.tencent.mobileqq',
			action: 'gongxuanwang://'
		});
	};

	function share(id, msg, callback) {
		var service = shareServices[id];
		if(!service) {
			callback && callback(false);
			return;
		}
		var _share = function() {
			//发送分享消息，分享消息的内容通过msg设置。
			// 发送成功后通过successCB回调函数通知操作完成，发送失败则通过errorCB回调返回。
			// 若分享服务没有进行授权认证或授权认证失效则触发失败回调函数。
			service.send(msg, function() {
				plus.nativeUI.toast("分享到\"" + service.description + "\"成功！");
				callback && callback(true);
			}, function(e) {
				console.log(JSON.stringify(e));
				plus.nativeUI.toast("分享到\"" + service.description + "\"失败！");
				callback && callback(false);
			})
		};
		if(service.authenticated) {
			_share(service, msg, callback);
		} else {
			service.authorize(function() {
				_share(service, msg, callback);
			}, function(e) {
				console.log("认证授权失败");
				callback && callback(false);
			})
		}
	};

	function openSystem(msg, callback) {
		if(plus.share.sendWithSystem) {
			plus.share.sendWithSystem(msg, function(e) {
				//调用系统分享操作成功时的回调函数，用于返回操作成功信息。 注：此回调并不表示分享消息已经发送成功。
				//callback && callback(true);
			}, function(e) {
				//调用系统分享操作失败时的回调函数，用于返回操作错误信息。
				//callback && callback(false);
			});
		} else {
			callback && callback(false);
		}
	}
	var open = function(msg, callback) {
		if(shareServices.weixin && isWechatInstalled() &&  shareServices.qq && isQqInstalled() && !/360\sAphone/.test(navigator.userAgent)) {
			plus.nativeUI.actionSheet({
				title: '分享到',
				cancel: "取消",
				buttons: [{
					title: "微信好友"
				}, {
					title: "微信朋友圈"
				},{
                    title: "QQ好友"
                },{
					title: "更多分享"
				}]
			}, function(e) {
				var index = e.index;
				switch(index) {
					case 1: //分享到微信好友
						if(msg.type == undefined){
                            msg.type = 'web';
						}
						console.log(msg.type);
						msg.extra = {
							scene: 'WXSceneSession'
						};
						share('weixin', msg, callback);
						break;
					case 2: //分享到微信朋友圈
						msg.title = msg.content;
						msg.extra = {
							scene: 'WXSceneTimeline'
						};
						share('weixin', msg, callback);
						break;
                   case 3:
                    	if(plus.os.name === 'iOS'){
                            msg.type = 'web';
						}
                        msg.title = msg.content;
                        msg.extra = {
                            scene: 'qq'
                        };
                        share('qq', msg, callback);
                        break;
					case 4: //更多分享
						var url = msg.href ? ('( ' + msg.href + ' )') : '';
						msg.title = msg.title + url;
						msg.content = msg.content + url;
						openSystem(msg, callback);
						break;
				}
			})
		} else if(shareServices.weixin && isWechatInstalled() && !/360\sAphone/.test(navigator.userAgent)) {
			plus.nativeUI.actionSheet({
				title: '分享到',
				cancel: "取消",
				buttons: [{
					title: "微信好友"
				}, {
					title: "微信朋友圈"
				},{
					title: "更多分享"
				}]
			}, function(e) {
				var index = e.index;
				switch(index) {
					case 1: //分享到微信好友
						if(msg.type == undefined){
                            msg.type = 'web';
						}
						console.log(msg.type);
						msg.extra = {
							scene: 'WXSceneSession'
						};
						share('weixin', msg, callback);
						break;
					case 2: //分享到微信朋友圈
						msg.title = msg.content;
						msg.extra = {
							scene: 'WXSceneTimeline'
						};
						share('weixin', msg, callback);
						break;
                   
					case 3: //更多分享
						var url = msg.href ? ('( ' + msg.href + ' )') : '';
						msg.title = msg.title + url;
						msg.content = msg.content + url;
						openSystem(msg, callback);
						break;
				}
			})
		} else if( shareServices.qq && isQqInstalled() && !/360\sAphone/.test(navigator.userAgent)) {
			plus.nativeUI.actionSheet({
				title: '分享到',
				cancel: "取消",
				buttons: [{
                    title: "QQ好友"
                },{
					title: "更多分享"
				}]
			}, function(e) {
				var index = e.index;
				switch(index) {
                    case 1:
                    	if(plus.os.name === 'iOS'){
                            msg.type = 'web';
						}
                        msg.title = msg.content;
                        msg.extra = {
                            scene: 'qq'
                        };
                        share('qq', msg, callback);
                        break;
					case 2: //更多分享
						var url = msg.href ? ('( ' + msg.href + ' )') : '';
						msg.title = msg.title + url;
						msg.content = msg.content + url;
						openSystem(msg, callback);
						break;
				}
			})
		} 
		else {
			//系统分享
			var url = msg.href ? ('( ' + msg.href + ' )') : '';
			msg.title = msg.title + url;
			msg.content = msg.content + url;
			openSystem(msg, callback);
		}
	};
	plusReady(init);
	window.plusShare = open;
})();